package cn.doit.scala.day05.high_function.yinshi

import cn.doit.scala.day05.high_function.User

/**
 * @DATE 2021/12/30/17:10
 * @Author MDK
 * @Version 2021.2.2
 * */
object C07_隐式变量 {
  //属性前面添加implicit关键字 表示隐式变量
  implicit val x = 21
  def m(implicit x:Int): Int ={
    x*x
  }
  def main(args: Array[String]): Unit = {
  //方法调用的时候从上下文中匹配  隐式参数的数据类型
    //发现有一个隐式变量x 是Int类型
    //隐式的将x传入方法内部  m  和 m(21)一样
    val res = m
    println(res)
//    implicit val x: Ordering[User] = new Ordering[User] {
//      override def compare(x: User, y: User): Int = {
//        -(x.id - y.id)
//      }
//    }

    //程序中找对应的implicit隐式变量  Ordering
    //def sorted[B>:A](implicit ord: Ordering[B]): Repr ={}
    val list = List[User](User(1,"zss",33),User(2,"zss",25),User(5,"zss",43))
    val sorted = list.sorted(new Ordering[User] {
      override def compare(x: User, y: User): Int = x.age-y.age
    })
    println(sorted)
  }
}
